2. Dateitypen und Dateityperkennung am Amiga (von Martin R. Elsner)

Wer hat sich nicht schon mal darüber lustig gemacht, dass die Microsoft-
Betriebssysteme sich strikt an ein festes Dateinamenschema halten, das 
früher sogar nur 8 Zeichen für den Namen und drei Zeichen für die Endung 
vorschrieb! Währenddessen ließ AmigaOS von Anfang an einen großen Freiraum 
bei der Bezeichnung von Dateien, was sich zum Beispiel in Dateinamen ohne 
oder mit zwei oder mehr Punkten äußerte. Aber diese drei Zeichen nach dem 
Punkt hatten einen nicht zu unterschätzenden Vorteil: Sie ließen schnell 
erkennen, um welchen Typ von Datei es sich handelte - womit wir beim Thema 
wären:

Dateitypen

Man kann grob zwei Arten von Objekten auf Speichermedien unterscheiden: 
Strukturen, also Verzeichnisse und Links, und Datenpakete, also Dateien. 
Während Strukturen im Aufbau immer gleich sind und fast vollständig vom 
Betriebssystem verwaltet werden, werden Dateien mit den verschiedensten 
Inhalten sowohl vom Betriebssystem als auch von beliebigen Anwendungen 
geschrieben und gelesen. Dies geht soweit, dass eine Datei ohne die 
zugehörige Anwendung wertlos und "unlesbar" ist!
Dies stellt das Betriebssystem und den Anwender vor ein großes Problem: Wie 
soll man erkennen, was eine Datei enthält und mit welcher Anwendung die 
Datei angezeigt oder bearbeitet werden kann? Während die einzelnen 
Anwendungen entscheiden können, ob eine Datei für sie lesbar ist, hat das 
System zunächst keine Entscheidungsgrundlage. Es kann außerdem der Fall 
eintreten, dass eine Datei von mehreren Anwendungen bearbeitet werden kann, 
so dass keine eindeutige Zuordnung möglich ist (zum Beispiel Grafiken oder 
Textdateien): Textdateien sollen beispielsweise in einem Editor angezeigt 
werden, aber falls es sich um HTML-Quellcode handelt, soll ein Browser 
gestartet werden!
Man erkennt, dass es sowohl Probleme bei der Definition eines klar 
abgegrenzten Dateityps als auch bei der Erkennung und Zuordnung zu einem 
Standardprogramm gibt. Wir schauen uns nun mal an, was es für Lösungen 
gibt:


Gates punktet

Oben sind sie schon aufgetaucht: die von Microsoft bekannten Endungen, die 
sich auch schon auf dem Amiga verbreitet haben. Im Grunde ist es die 
einfachste Möglichkeit, Dateien zu unterscheiden: Der Name erhält einen 
Zusatz, der den Inhalt charakterisiert. Unter den ersten Windows-Versionen 
war Position und Länge von Punkt und Endung fest vorgeschrieben, heute sind 
auch längere Endungen möglich. Die Dateitypen werden mit den zugehörigen 
Daten (also Endung, Beschreibung des Inhalts, Icon zur Anzeige in Listen, 
Standardprogramm und weitere Funktionen) in der Registry, also einer 
zentralen Systemdatenbank, gespeichert, auf die sowohl Anwender als auch 
Programme zugreifen können (die nötigen Rechte vorausgesetzt).

Sowohl System als auch Anwender können leicht erkennen, um welchen Typ von 
Datei es sich handelt. Beim Lesen eines Verzeichnisses kann zum Beispiel 
schnell nach einem Dateityp gefiltert werden, was am Amiga beispielsweise 
"list #?.info" zeigt. Da der Dateiname auch beim Kopieren auf andere 
Betriebssysteme erhalten bleibt, lässt sich so auch dort der Inhalt noch 
nachvollziehen. Die zentrale und gut zugängliche Speicherung der Dateitypen 
erleichtert den Zugriff durch Dateimanager oder das Anlegen eines neuen 
Dateityps durch eine Anwendung.
Aber das Prinzip hat auch Nachteile: Mit dem Umbenennen der Datei kann 
auch, absichtlich oder aus Versehen, die Endung geändert werden, wodurch 
die Informationen über den Inhalt verloren sind! Dass die Endungen auch 
manchmal stören, wenn in einem Verzeichnis nur Dateien eines Typs 
existieren, hat auch Microsoft erkannt und schon Möglichkeiten zum 
Ausblenden der Endung geschaffen, in der Hoffnung dass das zugehörige Icon 
dann noch aussagekräftig genug ist.
Ein weiteres Problem ist die mögliche Übereinstimmung von Endungen 
verschiedener Dateitypen; beschränkt man sich auf drei Buchstaben, so sind 
nämlich die lesbaren Endungen bald ausgeschöpft, und es kann durchaus dazu 
kommen, dass Programm x und Programm y Dateien mit der gleichen Endung 
versieht.


Interchange File Format

ist nur ein Beispiel für die nächste Art der Dateityperkennung; die als IFF
bekannten Dateien, die vor allem für Grafiken und Animationen benutzt 
werden, besitzen einen modularen Aufbau mit einer wichtigen Gemeinsamkeit: 
In den ersten Bytes der Datei - das heißt im Inhalt selbst - steht unter 
anderem der genaue Typ der folgenden Daten. Dies ist auch bei anderen 
Dateitypen der Fall, zum Beispiel bei JPEG- oder TIFF-Dateien.
Im Gegensatz zu den Endungen sind hier mehrere Informationen zur Erkennung 
nötig: Wo stehen die Kennzeichen, und was steht dort. Damit ist aber der 
Anwender auf einen Dateimanager angewiesen, der dies prüfen kann, ein 
einfaches "list" tut es nicht mehr. Durch das Öffnen der Datei wird zudem 
das Lesen eines Verzeichnisses langsamer, und mehr Zugriffe auf den 
Datenträger sind nötig.
Wie unter Windows, ist hier eine genaue Auflistung der Erkennungsmerkmale 
nötig, die möglichst zentral verwaltet werden sollte.


Amiga bietet bunte Bildchen

Unsere Workbench bietet eine etwas andere Lösung des Problems: Statt einer 
allgemeinen Klassifizierung kann jede Datei eine .info-Datei mitbringen, 
die alle nötigen Informationen enthält. Die zugehörige Grafik soll den Typ 
der Datei für den Anwender erkennbar machen, das Standardprogramm und 
weitere Eigenschaften werden in der .info-Datei abgelegt und können auf der 
Workbench angezeigt und bearbeitet werden.
Die Idee ist zwar nicht schlecht, aber wir kennen die Nachteile: Nicht alle
Dateien besitzen auch eine .info-Datei! Zudem müssen beim Kopieren, 
Umbenennen usw. immer auch die .info-Dateien berücksichtigt werden, was 
noch schlimmer als das Nutzen der Endung ist. Außerdem vermisst man unter 
den Informationen den eigentlichen Dateityp, was wieder dazu führt, dass 
das Icon so gestaltet sein muss, dass man den Typ erahnen kann.
Zur Verteidigung muss man allerdings hinzufügen, dass das Icon-Konzept 
eigentlich nur für die grafisch orientierte Workbench entwickelt wurde und 
dort auch akzeptable Dienste leistet.


Und nun??

Durch Internet und allgemeinen Datenaustausch finden sich auf Amiga-
Rechnern heute sowohl Amiga-spezifische als auch plattformunabhängige 
Dateiformate. Dort, wo Dateien aus der Windows-Welt übernommen werden, 
müssen Endungen geprüft werden, um den Dateityp zu erkennen, bei 
ausführbaren Programmen usw. müssen wir die Datei öffnen und den Inhalt 
prüfen.

Die Entwicklung hat nicht aufgehört, und so gibt es mehrere Lösungsansätze, 
die sich kaum unterscheiden.
DirectoryOpus, DefIcons und ClassAction beinhalten drei Ausführungen des 
gleichen Prinzips: die Konfiguration einer Liste von Dateitypen, wobei 
zunächst Standarddateitypen vordefiniert sind, aber auch das Bearbeiten, 
Hinzufügen und Entfernen neuer Typen möglich ist.
Dabei kann man sowohl Dateinamensmuster (also etwas mehr als nur Endungen) 
als auch Erkennungsmerkmale im Inhalt, zum Teil auch weitere 
Entscheidungskriterien angeben. DefIcons beschränkt sich allerdings auf die 
Klassen und definiert ein Standard-Icon, während DOpus und ClassAction eine 
Liste von Funktionen (Aktionen) hinzufügen.

Dies führt im schlimmsten Fall dazu, dass alle Dateitypen dreimal definiert 
werden müssen - wobei manche Definitionen nicht von einem zum anderen 
System übertragen werden können, da sich die unterstützen Kriterien 
unterscheiden. Die Stellung von DirectoryOpus und DefIcons in OS4+ sind 
wohl nicht nur mir zur Zeit unklar.
Es bleibt zu hoffen, dass das AmigaOS in Zukunft eine zentrale Verwaltung 
von Dateitypen und Standardfunktionen anbietet (auch durch eine Library mit 
den nötigen Funktionen), so wie es unter anderen Betriebssystemen möglich 
ist, da damit sowohl Benutzern als auch Programmierern das Leben 
erleichtert wird!

Euer

Martin R. Elsner <email@martin-elsner.de>